-- EXCLUSAO DO APONDAMENTO E INCLUSAO ( APENAS GERA O CODIGO )
CREATE OR REPLACE TRIGGER T_ATS_APONTAMENTO
BEFORE INSERT OR DELETE ON ATS_APONTAMENTO FOR EACH ROW
DECLARE
v_oflanc NUMBER;
v_erro NUMBER(1);
BEGIN
  IF INSERTING THEN
    SELECT SEQ_OFAPONTA.NEXTVAL INTO v_oflanc FROM DUAL;
    :NEW.APT_CODIGO := v_oflanc;
  ELSE
    BEGIN
      SELECT 1 INTO v_erro FROM ATS_LOTEMAT
      WHERE LMT_CODLOT = :OLD.APT_CODLOT
      AND   LMT_SAILOT > 0;
    EXCEPTION WHEN NO_DATA_FOUND THEN
       v_erro:=0;
    END;
    IF v_erro = 1 THEN      
       RAISE_APPLICATION_ERROR(-20001, 'O Lote deste apontamento ja foi usado e nao pode mais ser apagado'); 
    ELSE  
   
      FOR I IN ( SELECT * FROM ATS_CONSUMO WHERE CON_CODAPT = :OLD.APT_CODIGO) LOOP      
         DELETE ATS_CONSUMO WHERE CON_CODIGO = I.CON_CODIGO;
       
         UPDATE ATS_DETOF SET DOF_QTDREA = DOF_QTDREA - :OLD.APT_QTDAPT
         WHERE DOF_CODIGO = :OLD.APT_COFDET; 
       
      END LOOP;
    END IF;
  END IF;             
END;